1. Field of the Invention
Embodiments of the present invention relate generally to video processing and more specifically to video processing with multiple graphics processing units.
2. Description of the Related Art
Oftentimes, video data must be processed prior to being displayed. There is a variety of video processing procedures that may be applied to video data. Consider, for example, displaying data from a digital video disc (DVD) on a progressive display. If the content on the DVD has been encoded in an interlaced format, then the video data needs to be de-interlaced before it can be displayed on the progressive display. Also, DVDs generally contain sub-title information. If a user wishes to display sub-title information, the sub-title text needs to be extracted from the video data and then composited into the video picture. De-interlacing and sub-title generation are only two examples of video processing procedures. There are many other video processing procedures that may be applied to video data, such as edge-enhancement, picture scaling, color space conversion and the like. Further, video processing procedures are generally not mutually exclusive. For example, if the user wants to display video data from a DVD on a progressive display and display sub-titles concurrently, then both the de-interlace and the sub-title generation procedures may be applied to the video data. However, since each procedure is executed on the same basic set of video data, the different video processing procedure typically are applied to the video data in series, rather than in a parallel fashion.
Video images are comprised of a sequence of video frames, where each frame is comprised of two video fields. A typical frame rate used to display video frames is thirty frames per second (30 Hz). Therefore, the video processing procedures for the video data of a frame must execute in less time than the time required to display one frame of video data (approximately 33 milliseconds). If the time required to process a frame of video data is greater than the time required to display a frame of video data, then the processed video data cannot be displayed. Instead, previous video data is often shown in place of the current video data. This phenomenon is commonly referred to as “dropping” video frames and is quite undesirable because it results in a lack of motion smoothness, which is noticeable by the human eye, leading to poor video quality.
A graphics processing unit (GPU) may be configured to provide video processing functionality within a video processing system. For example, the GPU may be configured to use a three-dimension (3D) pixel shader to provide edge enhancement of the video data. Similarly, the GPU can be configured to implement other video processing procedures. Each processing task requires a finite amount of time to complete. Since, as described above, the frame rate limits the amount of time available to process each frame and the video processing procedures are generally implemented in series, the number and complexity of the video processing procedures that may be executed on single GPU is limited. Exacerbating this problem is the fact that high definition video images require processing up to six times more pixels than standard definition images. Increasing the pixel count increases the amount of time required to perform each processing procedure, thereby further limiting the number of video processing procedures a single GPU can apply to a frame of video data without exceeding the video frame time budget and, thus, increasing the chance of dropping the video frame.
As the foregoing illustrates, what is needed in the art is a way to increase the video processing throughput of a video processing system so that more processing procedures may be implemented on video data, including high definition video data, without increasing the incidence of dropped frames.